#include "mainbar.h"
#include "widget.h"
#include "ui_mainbar.h"
#include <QFile>
#include <QDebug>
#include <QStandardPaths>
#include <QMessageBox>
#include "database.h"
#include <QCoreApplication>
#include "userloginform.h"

Mainbar::Mainbar(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Mainbar)
{
    ui->setupUi(this);

    m_logManager = new LogManager(this);

    //连接点击btnGoRegister信号和发送display注册界面(3)信号
    connect(ui->btnGoRegister, &QPushButton::clicked, this, [=]() {
        emit display(Widget::INDEX_REGISTER);
        // 清空输入框
        ui->lineUsername->clear();
        ui->linePassword->clear();
    });

    //连接点击btnFindPassword信号和发送display找回密码界面(4)信号
    connect(ui->btnFindPassword, &QPushButton::clicked, this, [=]() {
        emit display(Widget::INDEX_FIND_PASSWORD);
        // 清空输入框
        ui->lineUsername->clear();
        ui->linePassword->clear();
    });

    //连接点击btnlogin信号和sendMessage信号
    connect(ui->btnlogin, &QPushButton::clicked, this, [=]() {
        if (ui->lineUsername->text().isEmpty()) {
            emit sendMessage("输入用户名为空，请输入有效内容!");
        } else if (ui->linePassword->text().isEmpty()) {
            emit sendMessage("输入密码为空，请输入有效内容!");
        } else {
            if (m_userMgr.login(ui->lineUsername->text(),
                                ui->linePassword->text())) {
                userInfo = m_userMgr.queryUserByUsernamePhoneMail(ui->lineUsername->text(),  "", "");
                // 检查是否查询到用户信息
                if (!userInfo.isEmpty()) {
                    if (userInfo["role"].toString() == "admin") {
                        // 显示管理员登录界面
                        emit display(Widget::INDEX_ADMIN_LOGIN);
                        emit sendUsername(ui->lineUsername->text()); // 发送用户名
                        // 记录操作日志
                        if (m_logManager) {
                            m_logManager->recordSystemLog(
                                        QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"),
                                        "OPERATION",                                     // 日志类型
                                        "INFO",                                          // 日志级别
                                        QString("管理员[%1]登录成功!").arg(ui->lineUsername->text()),   //操作内容
                                        userInfo["user_id"].toInt(),               // 用户ID
                                    -1                                               // 设备ID
                                    );
                        }
                    } else {
                        // 显示普通用户登录界面
                        emit display(Widget::INDEX_USER_LOGIN);
                        emit sendUsername(ui->lineUsername->text()); // 发送用户名
                        // 记录操作日志
                        if (m_logManager) {
                            m_logManager->recordSystemLog(
                                        QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"),
                                        "OPERATION",                                     // 日志类型
                                        "INFO",                                          // 日志级别
                                        QString("用户[%1]登录成功!").arg(ui->lineUsername->text()),   //操作内容
                                        userInfo["user_id"].toInt(),               // 用户ID
                                    -1                                               // 设备ID
                                    );
                        }
                    }
                } else {
                    // 若未查询到，输出错误信息
                    emit sendMessage("用户注册失败:" + m_userMgr.getLastError());
                }
                // 清空输入框
                ui->lineUsername->clear();
                ui->linePassword->clear();
            } else {
                emit sendMessage("登陆失败 : " + m_userMgr.getLastError());
            }
        }
    });
}

Mainbar::~Mainbar()
{
    delete ui;
}
